home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
009
/
unprot.arc
/
SYMPHONY.TXT
< prev
next >
Wrap
Text File
|
1986-03-27
|
10KB
|
260 lines
**************************** SYMPHONY Ver. 1.00 *************
;Making SYMPHONY ver 1.00 to run with out SYMPHONY'S master disk -
;unprotecting it:
;
;A>REN SYMPHONY.CMP SYMPHONY.XXX
;A>DEBUG SYMPHONY.XXX
;-R ;find the segment where loaded and add 1000 to it
; ;DS=0DFA - xxxx=1DFA (0DFAH+1000H=1DFAH)
;-E xxxx:3A05 75 ;change INT 13 to INT 75H (see label SYMINT below)
;-W ;save changed file
;-Q ;exit debuger
;A>REN SYMPHONY.XXX SYMPHONY.CMP
;A>SYMPH ;execute THIS PROGRAM (it modifies the changed interupt
; ;back to 13H since SYMPHONY does checksum of it's self)
;
;
;
; assemble, link, exe2bin
;
;Execute this program before using SYMPHONY.
;There is no need to re-execute this program after exit from SYMPHONY, in
;order to use the SYMPHONY again, since it is a resident program
;
;
;to further examine the symphony for possibly other way to solve this, using
;DEBUG, do:
;A>DEBUG SYMPHONY.EXE
;-G2
;-T3
;-G8A40
;-T ;at this point you will find the the subroutine that fills
; ;location ds:8735 with n and int 13 (the second one) which
; ;reads the serial number from flopy disk in A. Zeroing 8735
; ;fools the symphony, and prevents it from testing for special
; ;track/sector structure on the flopy. If the location 8735 is
; ;not zeroed, debugging will not be possible after IP 8A4D,
; ;since INT 3 will be modified by SYMPHONY.
;
SYMINT EQU 75H ;interupt to use
SYMFLG EQU 8735H ;see above for info
CSEG SEGMENT
ASSUME CS:CSEG,DS:CSEG
ORG 100H
PROGRA: XOR AX,AX
MOV ES,AX ;set to segment 0 (interupt table)
XOR DX,DX
MOV AL,SYMINT ;interupt number
MOV CX,4 ;get position in interupt table
MUL CX
MOV BX,AX
TEST WORD PTR ES:[BX],0 ;test if set?
JZ DOIT ;no, go set it
INT 20H ;exit to dos with out mod
DOIT: ;get interupt routine address
MOV word ptr ES:[BX],offset corc ;store it at the apropriate int address
MOV ES:[BX+2],CS ;also store the segment
MOV DX,5+16 ;lenght of this pgm in segments
MOV AX,3103H ;exit & stay resident
INT 21H
;this is the actual interupt
CORC: CLI
PUSH ES ;save all used registers
PUSH BP
PUSH BX
MOV BP,SP
MOV ES,[BP+8] ;get calling segment from stack
MOV BX,[BP+6] ;get calling address from stack
DEC BX ;back up one
MOV BYTE PTR ES:[BX],13H ;store interupt 13h there
MOV BYTE PTR DS:SYMFLG,0 ;zero out the flopy test flag
POP BX ;restore registers
POP BP
POP ES
STI
IRET ;back to symphony
CSEG ENDS
END PROGRA
**************************** SYMPHONY Ver. 1.00 *************
Here is the "ENGLISH" version of the Symphony Unprotect procedure:
1. Rename the program
REN SYMPHONY.CMP SYMPHONY.XXX
2. Type DEBUG SYMPHONY.XXX
3. After the - prompt appears, type R and press Enter
Look at the value displayed for the DS register (left hand, second line)
Whatever the value is, add 1000 to it. For example, if the DS contains
05DF, add 1000 to make it 15DF. I will refer to this new value as yyyy
in the next step.
4. Type E yyyy:3A05 75 press Enter
5. Type W press Enter
6. Type Q press Enter
7. Rename the program back to the original name
REN SYMPHONY.XXX SYMPHONY.CMP
Now, BEFORE you run the SYMPHONY program, run the program in this Library
call SYMPH.COM. This need only be run ONCE after each boot. If you want,
you may place it in your AUTOEXEC.BAT file. It uses Interrupt 75H which
should not conflict with other programs (NOTE.. this may not be true on the
3270PC).
After running SYMPH.COM, you may run your patched version of SYMPHONY
without the need for the master diskette.
The other files in this library are:
The original unprotection scheme which required you to assemble a program.
The assembler SYMPH.COM.
Good Luck.
nged file
;-Q ;exit debuger
;A>REN SYMPHONY.XXX SYMPHONY.CMP
;A>SYMPH ;execute THIS PROGRAM (it modifies the changed interupt
; ;back to 13H since SYMPHONY does checksum of it's self)
;
;
;
; assemble, link, exe2bin
;
;Execute this program before using SYMPHONY.
;There is no need to re-execute this program after exit from SYMPHONY, in
;order to use the SYMPHONY again, since it is a resident program
;
;
;to further examine the symphony for possibly other way to solve this, using
;DEBUG, do:
;A>DEBUG SYMPHONY.EXE
;-G2
;-T3
;-G8A40
;-T ;at this point you will find the the subroutine that fills
; ;location ds:8735 with n and int 13 (the second one) which
; ;reads the serial number from flopy disk in A. Zeroing 8735
; ;fools the symphony, and prevents it from testing for special
; ;track/sector structure on the flopy. If the location 8735 is
; ;not zeroed, debugging will not be possible after IP 8A4D,
; ;since INT 3 will be modified by SYMPHONY.
;
SYMINT EQU 75H ;interupt to use
SYMFLG EQU 8735H ;see above for info
CSEG SEGMENT
ASSUME CS:CSEG,DS:CSEG
ORG 100H
PROGRA: XOR AX,AX
MOV ES,AX ;set to segment 0 (interupt table)
XOR DX,DX
MOV AL,SYMINT ;interupt number
MOV CX,4 ;get position in interupt table
MUL CX
MOV BX,AX
TEST WORD PTR ES:[BX],0 ;test if set?
JZ DOIT ;no, go set it
INT 20H ;exit to dos with out mod
DOIT: ;get interupt routine address
MOV word ptr ES:[BX],offset corc ;store it at the apropriate int address
MOV ES:[BX+2],CS ;also store the segment
MOV DX,5+16 ;lenght of this pgm in segments
MOV AX,3103H ;exit & stay resident
INT 21H
;this is the actual interupt
CORC: CLI
PUSH ES ;save all used registers
PUSH BP
PUSH BX
MOV BP,SP
MOV ES,[BP+8] ;get calling segment from stack
MOV BX,[BP+6] ;get calling address from stack
DEC BX ;back up one
MOV BYTE PTR ES:[BX],13H ;store interupt 13h there
MOV BYTE PTR DS:SYMFLG,0 ;zero out the flopy test flag
POP BX ;restore registers
POP BP
POP ES
STI
IRET ;back to symphony
CS
**************************** SYMPHONY Ver. 1.1 *************
Suppressing the Serial Number Search on Drive A:
for Symphony 1.1
NOTE: THE METHODS DESCRIBED BELOW APPLY ONLY TO THE VERSION OF SYMPHONY
1.1 PRODUCED BY THE "COPYIIPC" ARCHIVAL BACKUP PROGRAM. DO NOT ATTEMPT
THE FOLLOWING STEPS IF YOU HAVE NOT BACKED-UP UP YOUR SYMPHONY 1.1
PROGRAM DISK WITH COPYIIPC.
A number of people are under the impression that Symphony 1.1 must
still search for the serial number of the key disk even after having
used COPYIIPC to make a backup copy that will run from a hard disk.
This is not necessarily true, and it proves that it pays to read the
documentation that programs come with. COPYIIPC includes a program
called NOKEY which, if executed prior to running Symphony 1.1, will
prevent the serial number search to drive A:. If fact, NOKEY even
supplies a serial number of 0's for Symphony to display on the opening
screen.
But even if you use NOKEY, you may still encounter problems. There
is a situation in which NOKEY will not work properly. If you use
Sidekick, the "ACCESS" program to start Symphony 1.1 together with NOKEY
you will get a message "cannot find file COMMAND.COM". You have to stop
using either NOKEY or ACCESS to run Symphony 1.1 successfully from a
hard disk.
Luckily there is a way to get aroung this problem. As a minor side
benefit, you will no longer need to use NOKEY to stop the serial number
search. You will be making a slight modification to the file
"SYMPHONY.EXE". Note that this file is created by COPYIIPC. Do not
modify any other file!
Follow the DEBUG instructions below. After you finish, Symphony 1.1
will not go to drive A:. Since Copyiipc has already removed the
Softguard protection, this means Symphony 1.1 is usable from a hard disk
without any dependence on your floppy drive.
-------------------------------------------------------------------
C>copy symphony.exe symphony.bak (make a backup, just in case)
C>ren symphony.exe symphony.xyz
C>debug symphony.xyz
-d 0af4 0af5 ;display locations 0af4-0af5
XXXX:0AF4 CD 13 ;if you don't see exactly this, don't continue
-e 0af4 90 90 ;NOP out the disk read instruction
-e 0afb 90 90 ;cause "serial # not found" msg. to be printed
-w ;write the modified file
Writing 1AD1 bytes
-q
C>ren symphony.xyz symphony.exe
--------------------------------------------------------------------
Be sure to stop using NOKEY, since it is no longer required with the
above modification.